﻿#pragma once

class QQmlContext;

class PluginAction
{
public:
    PluginAction(QQmlContext* context) : m_context(context){}
    virtual ~PluginAction() = default;
    //************************************
    // 符号名称:  operate
    // 符号上下文:PluginAction::operate
    // 权限:      virtual public 
    // 返回值:    void
    // 限定符:   
    // 参数:      QVariant v
    // 描述:      插件接收方案1 { "name": "$(PluginsName)","message":{ "command":"$(UpdateData)", "body":插件消息体 } }
    //            message的Obj可以灵活运用
    //************************************
    virtual void operate(QVariant v) = 0;
    //************************************
    // 符号名称:  load
    // 符号上下文:PluginAction::load
    // 权限:      virtual public 
    // 返回值:    void
    // 限定符:   
    // 参数:      QJsonArray const & arr
    // 描述:      加载所有插件，保证同步加载和异步加载问题
    //************************************
    virtual void load(QJsonArray const& arr) = 0;
    QQmlContext* context() const { return m_context; }
protected:
    QQmlContext* m_context = nullptr;
};
